home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / podslip.lha / pod.s < prev   
Encoding:
Text File  |  1989-08-12  |  31.6 KB  |  1,675 lines

  1. ;************************************************************
  2. ;***   THIS INTRO WAS CODED BY POD WITH HELP FROM FANGS   ***
  3. ;***** IF YOU WANT TO SWAPP HINTS AND TIPS WITH ME THEN *****
  4. ;******* PHONE POD ON (0742) 554063 OR WRITE TO ME AT *******
  5. ;*********69 WOODSEATS RD WOODSEATS SHEFFIELD S8 OPH*********
  6. ;************************************************************
  7. ;*        EQUALIZER AND DEBUGGING BY SHAGRATT OF LSD!       *
  8. ;*   THE WIGGLY LINES ON EXECUTING IS THE ROUTINE THAT      *
  9. ;*   SEARCHES THE MODULE FOR THE HIGHEST AND THE LOWEST     *
  10. ;*   NOTE AND THEN ALL THE EQUALISERS ARE USED SO IT LOOKS  *
  11. ;*            GOOD WITH (ALMOST!) ANY MODULE!               *
  12. ;*    ITS MARKED IN THE CODE, AND THE WIGGLY LINES CAN      *
  13. ;*    BE TURNED OFF, BUT IT LOOKS OK WHEN PACKED!!!!!!      *
  14. ;************************************************************
  15. ;*    IF YOUR EVER SHORT OF MUSIC FEEL FREE TO RIP ANY LSD  *
  16. ;*            STUFF, NO NEED TO ASK, JUST CREDIT US!!!      * 
  17. ;************************************************************
  18. ;*  ANY MORE PROBLEMS GIVE ME A RING, HOPE YOU LIKE THIS    *
  19. ;*  AND SEND PARASITE A COPY SOON AS IT IS RELEASED FOR ONE *
  20. ;*  OF HIS COMPACTS, GOTTA GO NOW, SEE YOU LATER.  SHAGRATT * 
  21. ;************************************************************
  22.  
  23.     SECTION    POD_OF_SLIPSTREAM_,CODE_C
  24.     OPT    C-
  25.  
  26.     ;incdir  df0:,df2:
  27.  
  28.     bsr    maxmin
  29.  
  30.     move.l    #myequalmem,d0
  31.     swap    d0
  32.     move.w    d0,bpequal+2
  33.     swap    d0
  34.     move.w    d0,bpequal+6
  35.  
  36.     move.l  #grumpy,getto
  37.     move.l    #Screen,Store
  38.     Move.w    Store,Plne+2
  39.     move.w  store,plne1+2
  40.     Move.w    Store+2,Plne+6
  41.     move.w  store+2,plne1+6
  42.     MOVE.L    #DIFFERENCE,STORE
  43.     MOVE.W    STORE,SCRL+2
  44.     MOVE.W    STORE+2,SCRL+6
  45.     move.w  #56,d1
  46. loop:   bsr    Colour
  47.     Bsr    Cycle
  48.     dbf    d1,loop
  49.     move.w    #90,d1
  50. long    bsr    waveplace2
  51.         bsr    wavecycle
  52.         dbf    d1,long
  53.     move.l  #logo,store
  54.     lea    bitmap,a0
  55.     move.w    #4,d0
  56. planes: move.w    store,2(a0)
  57.      move.w    store+2,6(a0)
  58.      add.w    #8,a0
  59.      add.l    #4640,store
  60.      dbf    d0,planes
  61.      lea    logo+23200,a0
  62.      lea    cols+2,a1
  63.      move.w    #31,d0
  64. place:     move.w    (a0)+,(a1)
  65.      add.w    #4,a1
  66.      dbf    d0,place
  67.     MOVE.L    4,A6
  68.     LEA.L    GFxNAME,A1
  69.     CLR.L    D0
  70.     JSR    -552(A6)
  71.     MOVE.L    D0,GFXLOC
  72.     MOVE.L    GFXLOC,A6
  73.     MOVE.L    50(A6),OLDCOP
  74.     MOVE.L    #COPPER,50(A6)
  75.     MOVE.L    #$FFFF,D0
  76. COPDEL:    DBF    D0,COPDEL
  77.     MOVE.W    #%1000011111100000,$DFF096
  78.     MOVE.W    #$C000,$DFF09A
  79.     MOVE.L    #$FFFFFFFF,$DFF044
  80.     MOVE.W    #00,$DFF042
  81.     MOVE.W    #%0000100111110000,$DFF040
  82.     MOVE.W    #$4000,$DFF09A
  83.  
  84.       JSR     STARS_ON
  85. START:    CMP.B    #$05,$DFF006
  86.     BNE.S    START
  87.     jsr     bounce
  88.     bsr     Colour
  89.     bsr     Cycle
  90.     bsr     waveplace2
  91.     bsr     wavecycle
  92.     jsr    scroll
  93.     jsr    SCROLLY
  94.     jsr    mt_music
  95.     jsr     show_equals
  96.  
  97.     btst    #6,$bfe001
  98.     beq    reset
  99.     btst    #7,$bfe001
  100.     beq    reset
  101.     btst    #10,$dff016
  102.     beq    reset
  103.     BRA.s    START
  104.  
  105. RESET:    MOVE.W    #$C000,$DFF09A
  106.     MOVE.W    #$0F,$DFF096
  107.     jsr     mt_end
  108.     MOVE.L    GFXLOC,A6
  109.     MOVE.L    OLDCOP,50(A6)
  110.     MOVE.L    4,A6
  111.     MOVE.L    GFXLOC,A1
  112.     JSR    -414(A6)
  113.     CLR.L    D0
  114. EX:    RTS
  115.  
  116. maxmin:
  117.     jsr    mt_end
  118.     jsr    mt_init
  119.  
  120.     move.l    #-1,calc
  121.     move.l    #0,finished
  122.     move.w    #$f0f,finding
  123.     move.l    #0,maxequal
  124.     move.l    #99999,minequal
  125.         
  126. find_maxmin:
  127.     jsr    mt_music
  128.     cmp.l    #-1,finished
  129.     bne.s    find_maxmin    
  130.  
  131.     move.l    #0,calc
  132.  
  133.     rts
  134.  
  135. Blit_Wait    Btst    #14,$dff002
  136.         bne.s    Blit_Wait
  137.         Rts
  138.             
  139. Colour:        lea colourtable,a0
  140.         add.w colourptr,a0
  141.         cmp.w #$8888,(a0)
  142.         bne colour1
  143.         clr.W colourptr
  144.         bra.s colour
  145. colour1:    move.w    (a0),colours1+2
  146.         Move.w    (a0),colours2+2
  147.         add.w #2,colourptr
  148.         rts
  149.             
  150. Cycle:        jsr    Blit_Wait
  151.         move.l    #colours+4,$dff050    ;a source IM
  152.         move.l    #colours,$dff054    ;d source
  153.         move.w    #$0000,$dff064    ;a mod
  154.         move.w    #$0000,$dff066    ;d mod
  155.         move.w    #$ffff,$dff044    ;fw mask
  156.         move.w    #$ffff,$dff046    ;lw mask
  157.         move.w    #%0000100111110000,$dff040    ;con0
  158.         move.w    #%0000000000000000,$dff042    ;con1
  159.         move.w    #2*64+56,$dff058    ;size        
  160.         jsr    Blit_Wait
  161.         move.l    #colours3,$dff050    ;a source IM
  162.         move.l    #colours3+4,$dff054    ;d source
  163.         move.w    #$0000,$dff064    ;a mod
  164.         move.w    #$0000,$dff066    ;d mod
  165.         move.w    #$ffff,$dff044    ;fw mask
  166.         move.w    #$ffff,$dff046    ;lw mask
  167.         move.w    #%0000100111110000,$dff040    ;con0
  168.         move.w    #%0000000000000010,$dff042    ;con1
  169.         move.w    #2*64+57,$dff058    ;size        
  170.         jsr    Blit_Wait
  171.         JSR     STAR_MOVE    
  172.         rts
  173.          
  174. colourptr:    dc.w $0
  175.  
  176. waveplace2: lea wavy,a0
  177.          add.w waveptr2,a0
  178.          cmp.w #$8888,(a0)
  179.          bne wcolour12
  180.          clr.W waveptr2
  181.          bra.s waveplace2
  182. wcolour12:     move.w (a0),wave1+6
  183.             add.w #2,waveptr2
  184.             rts
  185.             
  186. wavecycle:    lea wave+6,a0
  187.         move.w #89,d0
  188. wavecycle1:    move.w 8(a0),(a0)
  189.         add.w #8,a0
  190.         dbf d0,wavecycle1
  191.         rts
  192.  
  193. waveptr2:    dc.w $0
  194.  
  195.  
  196.     ****************************************
  197.     *    Multi-purpose Stafield Creator    *
  198.     *                       *    
  199.     *        Written by Andy Clark         *    
  200.     *                       *    
  201.     *           3rd August 1990           *    
  202.     *                       *    
  203.     *      Strictly for use by anyone      *    
  204.     ****************************************
  205.  
  206.     ****************************************
  207.     *     Use the four equates for fx      *    
  208.     ****************************************
  209.     
  210. star_top    equ    $4c        ;first line
  211. star_height    equ    90        ;number of lines
  212. density        equ    1        ;density of stars (0-3)
  213. direction    equ    0        ;0-right 1-left
  214.  
  215.     ****************************************
  216.     *     Use the four equates for fx      *    
  217.     ****************************************
  218.  
  219.     ** Call this once to set up stars
  220.     ** Attention: You must have sp0-2 defined on copper list    
  221.  
  222. Stars_on:
  223.     lea    den,a0
  224.     move.l    #density,d0
  225.     move.b    (a0,d0),dens+3
  226.  
  227.     lea    st0,a0
  228.     move.l    #star0,d0
  229.     move.l    sth0,d1
  230.     jsr    setstars
  231.     lea    st1,a0
  232.     move.l    #star1,d0
  233.     move.l    sth1,d1
  234.     jsr    setstars
  235.     lea    st2,a0
  236.     move.l    sth2,d1
  237.     move.l    #star2,d0
  238.     jsr    setstars
  239.  
  240.     move.l    #st0,d0
  241.     move.w    d0,sp0+6
  242.     swap    d0
  243.     move.w    d0,sp0+2
  244.  
  245.     move.l    #st1,d0
  246.     move.w    d0,sp1+6
  247.     swap    d0
  248.     move.w    d0,sp1+2
  249.  
  250.     move.l    #st2,d0
  251.     move.w    d0,sp2+6
  252.     swap    d0
  253.     move.w    d0,sp2+2
  254.     rts
  255.  
  256. Setstars:
  257.     move.b    #0,msb
  258.     move.b    #star_top,stary
  259.     move.l    d0,stardat
  260.     move.l    d1,starh
  261.     move.l    #0,starcnt
  262.  
  263. .lp2:    jsr    random
  264.     and.l     dens,d1
  265.     add.b    d1,stary    ;updt stary position
  266.     bcc    .lp3        ;over gmt?
  267.     move.b    #1,msb
  268. .lp3:    add.l    d1,starcnt    ;inc count
  269.     move.l    #star_height,d0
  270.     cmp.l    starcnt,d0
  271.     blt    .lp        ;reached end
  272.     move.b    stary,(a0)    ;set ystart
  273.     bclr.b    #2,3(a0)
  274.     tst.b    msb        ;check over
  275.     beq    .lp5
  276.     bset.b    #2,3(a0)
  277. .lp5:    move.b    stary,2(a0)    
  278.     move.b    starh+3,d1
  279.     add.b    d1,2(a0)    ;set ystop
  280.     bcc    .lp4
  281.     move.b    #1,msb
  282. .lp4:    bclr.b    #1,3(a0)
  283.     tst.b    msb        ;check over
  284.     beq    .lp6
  285.     bset.b    #1,3(a0)
  286. .lp6:    jsr    random
  287.     move.b    d1,1(a0)    ;set xpos
  288.     add.b    #1,stary    ;updt for next y position
  289.     move.b    starh+3,d1
  290.     add.b    d1,stary
  291.     add.l    #4,a0        ;point to data
  292.     move.l    stardat,a1
  293.     move.l    starh,d1
  294.     subq.l    #1,d1
  295. .lp7:    move.l    (a1)+,(a0)+    ;put data into display
  296.     dbra    d1,.lp7
  297.     add.l    #1,starcnt    ;in count
  298.     move.l    starh,d1
  299.     add.l    d1,starcnt
  300.     move.l    #star_height,d0
  301.     cmp.l    starcnt,d0
  302.     blt    .lp        ;reached end
  303.     bra    .lp2        ;get next star
  304. .lp:    move.l    #0,(a0)
  305.     rts
  306.  
  307.     ** Call this every frame
  308.  
  309. Star_move:
  310.     lea    st0,a0
  311.     move.l    #3,d0        ;speed
  312.     move.l    sth0,d2
  313.     asl.l    #2,d2
  314.     add.l    #4,d2
  315.     jsr    stmov
  316.     lea    st1,a0
  317.     move.l    #2,d0        ;speed
  318.     move.l    sth1,d2
  319.     asl.l    #2,d2
  320.     add.l    #4,d2
  321.     jsr    stmov
  322.     lea    st2,a0
  323.     move.l    #1,d0        ;speed
  324.     move.l    sth2,d2
  325.     asl.l    #2,d2
  326.     add.l    #4,d2
  327.     jsr    stmov
  328.     rts
  329. stmov:    move.l    #direction,d1
  330.     beq    .lp
  331.     neg.l    d0
  332. .lp    add.b    d0,1(a0)
  333.     add.l    d2,a0
  334.     tst.l    (a0)
  335.     bne     .lp
  336.     rts
  337.  
  338. random    moveq.l    #0,d1
  339.     lea    $fc0000,a6
  340.     move.l    framecount,d5
  341.     move.b    (a6,d5),d1
  342.     and.l    #$07,d5
  343.     lea    rseed,a6
  344.     move.b    (a6,d5),d5
  345.     eor.b    d5,d1
  346.     add.l    d1,framecount
  347.     cmp.l    #2000,framecount
  348.     blt    noz2
  349.     move.l    #0,framecount
  350.     and.l    #7,d5
  351.     move.b    d1,(a6,d5)
  352.     eor.l    d1,framecount
  353. noz2    rts
  354.  
  355.     ****************************************
  356.     *     Bottom of Starfield Routine      *    
  357.     ****************************************
  358.  
  359. scroll:    move.l     #$DFF000,A6
  360.     MOVE.L     #SCREEN,d0
  361.     move.l     d0,d1
  362.     addq.l     #2,d1        ; a2 points to next word
  363.     move.l     d1,$50(a6)    ; srce 
  364.     move.l     d0,$54(a6)    ; Dest 
  365.     clr.w     $064(A6)        ; No modulos
  366.     clr.w     $066(A6)
  367.     move.l     #-1,$044(A6)    ; Set all masks on
  368.     clr.w     $042(A6)    ; BLTCON1 = Blitter control reg.1
  369.     MOVE.W     #%1101100111110000,$040(a6)
  370.     move.w     #16*64+22,$058(a6)
  371.     subq.b     #1,charcount
  372.     bne.s     nocharyet
  373.     move.b     #5,charcount    
  374.     move.l     textptr,a0
  375.     moveq     #0,d0
  376.     move.b     (a0)+,d0
  377.     cmpi.b     #0,(a0)
  378.     bne.s     nottextend
  379.     move.l     #texttab,a0
  380.  
  381. nottextend:
  382.     move.l     a0,textptr
  383.     bsr.s     putletter
  384.  
  385. nocharyet:
  386.     rts
  387.  
  388.  
  389. putletter:
  390.     lea     fontmap,a0
  391.     subi.b     #32,d0
  392.  
  393. rndagain:    
  394.     cmpi.b     #20,d0        
  395.     blt.s     okputchar
  396.     adda.l     #40*16,a0    ; Size of 1 line of chs
  397.     subi.b     #20,d0
  398.     bra.s     rndagain
  399.  
  400. okputchar:
  401.     rol.b    #1,d0
  402.     andi.b    #$fe,d0
  403.     add.l    a0,d0
  404.     move.l    #$DFF000,A6
  405.     move.l    #SCREEN,d1
  406.     subi.l    #2,d1
  407.     move.l    d0,$50(a6)
  408.     move.l    d1,$54(A6)
  409.     MOVE.W    #38,$064(A6)
  410.     MOVE.W    #wide,$066(A6)
  411.     move.l    #-1,$044(A6)    ; Set all masks on
  412.     clr.w    $042(A6)    ; BLTCON1 = Blitter control reg.1
  413.     MOVE.W    #%0000100111110000,$040(a6)
  414.     move.w    #64*16+1,$058(a6)
  415.     RTS
  416.     
  417. bounce:
  418.     move.l getto,a4
  419.     move.w (a4)+,shat
  420.     addi.b #1,poo
  421.     cmpi.b #24,poo  ;number in table
  422.     beq lop
  423.     move.l a4,getto
  424.     jmp cak
  425. lop:
  426.     move.b #0,poo
  427.     move.l #grumpy,getto
  428. cak:    
  429.     rts
  430.  
  431. SINSCROLL:LEA    DIFFERENCE,A0        ;    VISIBLE BIT PLANE
  432.  
  433. BLITREADY:BTST    #14,$DFF002        ;    CHECK FOR BUSY BLITTER
  434.     BNE.S    BLITREADY        ;    WAIT TILL BLITTER READY
  435.  
  436.     MOVE.L    A0,$DFF054        ;    SOURCE ADDRESS
  437.     MOVE.L    A0,$DFF050        ;    DESTINATION ADDRESS
  438.     CLR.L    $DFF044            ;    NO FWM/LWM (SEE HARDWARE MANUAL)
  439.     CLR.L    $DFF064            ;    NO MODULO (SEE HARDWARE MANUAL)
  440.     MOVE.W    #%100000000,$DFF040    ;    ENABLE DMA CHANNEL D, NOTHING ELSE, NO MINTERMS ACTIVE. 
  441.     CLR.W    $DFF042            ;    NOTHING SET IN BLTCON1
  442.     MOVE.W    #(60*64)+(wide/2)+1,$DFF058    ;    WINDOW SIzE = 21 WORDS WIDE 60 LINES DEEP
  443.  
  444.     MOVE.L    SINPT,A3
  445.     SUBQ.L    #1,A3
  446.     MOVE.B    (A3),D0
  447.     CMP.B    #255,D0
  448.     BNE.S    NOTENDOFSINE
  449.     
  450.     LEA    SINTABEND,A3
  451. NOTENDOFSINE:MOVE.L    A3,SINPT
  452.     MOVEQ    #(wide/2)-2,D0                ; no of chrs to scroll
  453.     LEA    SCROLLPLANE,A0
  454.     LEA    DIFFERENCE,A1
  455.  
  456. SLOOP3:    BSR    GETSINVAL
  457. BLITREADY2:BTST    #14,$DFF002
  458.     BNE.S    BLITREADY2
  459.     MOVE.L    A0,$DFF050
  460.     MOVE.L    A2,$DFF054
  461.     MOVE.L    #$F000F000,$DFF044
  462.     MOVE.W    #40,$DFF064
  463.     MOVE.W    #wide,$DFF066
  464.     MOVE.W    #%0000100111110000,$DFF040
  465.     CLR.W    $DFF042
  466.     MOVE.W    #(32*64)+1,$DFF058
  467.     BSR    GETSINVAL
  468. zONK2:    BTST    #14,$DFF002
  469.     BNE.S    zONK2
  470.     MOVE.L    A0,$DFF050
  471.     MOVE.L    A2,$DFF054
  472.     MOVE.L    A2,$DFF04C
  473.     MOVE.L    #$F000F00,$DFF044
  474.     MOVE.W    #40,$DFF064
  475.     MOVE.W    #wide,$DFF066
  476.     MOVE.W    #wide,$DFF062
  477.     MOVE.W    #%0000110111111100,$DFF040
  478.     CLR.W    $DFF042
  479.     MOVE.W    #(32*64)+1,$DFF058
  480.     BSR    GETSINVAL
  481. zONK3:    BTST    #14,$DFF002
  482.     BNE.S    zONK3
  483.     MOVE.L    A0,$DFF050
  484.     MOVE.L    A2,$DFF054
  485.     MOVE.L    A2,$DFF04C
  486.     MOVE.L    #$F000F0,$DFF044
  487.     MOVE.W    #40,$DFF064
  488.     MOVE.W    #wide,$DFF066
  489.     MOVE.W    #wide,$DFF062
  490.     MOVE.W    #%0000110111111100,$DFF040
  491.     CLR.W    $DFF042
  492.     MOVE.W    #(32*64)+1,$DFF058
  493.     BSR    GETSINVAL
  494. zONK4:    BTST    #14,$DFF002
  495.     BNE.S    zONK4
  496.     MOVE.L    A0,$DFF050
  497.     MOVE.L    A2,$DFF054
  498.     MOVE.L    A2,$DFF04C
  499.     MOVE.L    #$F000F,$DFF044
  500.     MOVE.W    #40,$DFF064
  501.     MOVE.W    #wide,$DFF066
  502.     MOVE.W    #wide,$DFF062
  503.     MOVE.W    #%0000110111111100,$DFF040
  504.     CLR.W    $DFF042
  505.     MOVE.W    #(32*64)+1,$DFF058
  506.     ADDQ.L    #2,A0
  507. LOAD    ADDQ.L    #2,A1
  508.     DBRA    D0,SLOOP3
  509.     RTS
  510.     
  511. GETSINVAL:MOVEQ    #0,D1
  512.     MOVE.B    (A3)+,D1
  513.     MOVE.B    (A3),D2
  514.     CMP.B    #255,D2
  515.     BNE    OKYAR
  516.     MOVE.L    #SINTAB,A3
  517. OKYAR:    LSR.B    #1,D1
  518.     BCLR    #0,D1
  519.     MULU    #(wide/2)+1,D1            ; width of one line (sine scroll)
  520.     MOVE.L    A1,A2
  521.     ADD.L    D1,A2
  522.     RTS
  523.     
  524. SCROLLY:MOVE.B    PAUSE,D0
  525.     CMP.B    #0,D0
  526.     BEQ    GOPAST
  527.     SUB.B    #1,D0
  528.     MOVE.B    D0,PAUSE
  529.     BRA    GOPAST2
  530. GOPAST:    MOVE.L    #SCROLLPLANE,A0
  531.     MOVE.L    #SCROLLPLANE+2,A1
  532. BLITREADY3:BTST    #14,$DFF002
  533.     BNE.S    BLITREADY3
  534.  
  535.     MOVE.L    A0,$DFF054
  536.     MOVE.L    A1,$DFF050
  537.     MOVE.L    #-1,$DFF044
  538.     CLR.L    $DFF064
  539.     MOVE.W    #%1100100111110000,$DFF040
  540.     CLR.W    $DFF042
  541.     MOVE.W    #(40*64)+20,$DFF058    ; **********************
  542. GOPAST2:BSR    SINSCROLL
  543.     MOVE.B    PAUSE,D0
  544.     CMP.B    #0,D0
  545.     BNE    IUO
  546.     MOVE.B    COUNTDOWN,D0
  547.     SUB.B    #1,D0
  548.     CMP.B    #0,D0
  549.     BEQ    MFC
  550.     MOVE.B    D0,COUNTDOWN
  551. IUO:    RTS
  552. MFC:    MOVE.B    #4,COUNTDOWN
  553.  
  554.     ;CLR.W    SCROLLPLANE+40        ; ???
  555.     ;CLR.W    SCROLLPLANE+82        ; ???
  556.  
  557.     MOVE.L    #SCROLLPLANE+(4*wide)+34,A1
  558.  
  559.     BSR    CHARADDRESS
  560.     
  561.     MOVEQ    #15,D0
  562. zONKIN:    MOVE.W    (A0),(A1)
  563.     LEA    40(A0),A0
  564.     LEA    42(A1),A1
  565.     DBF    D0,zONKIN
  566.     RTS
  567.     
  568. CHARADDRESS:
  569.     MOVE.L    MESPTR,A0
  570.     MOVEQ    #0,D0
  571.     MOVE.L    D0,D1
  572.     MOVE.L    D0,D2
  573.     MOVE.B    (A0)+,D0
  574.     CMP.B    #$0A,D0
  575.     BNE    WIzY
  576.     MOVE.B    #32,D0
  577. WIzY:    CMP.B    #255,D0
  578.     BNE    WAzY
  579.     MOVE.L    #MESSAGE,A0
  580.     MOVE.B    #32,D0
  581. WAzY:    CMP.B    #254,D0
  582.     BNE    WOzY
  583.     MOVE.B    #32,D0
  584.     MOVE.B    #$60,PAUSE
  585. WOzY:    MOVE.L    A0,MESPTR
  586.     SUB.B    #32,D0    
  587.     MOVEQ    #0,D1
  588.     DIVU    #20,D0                ;    20 CHARS ON EACH LINE
  589.     MOVE.B    D0,D1
  590.     CLR.W    D0
  591.     SWAP    D0
  592.     MOVE.L    #FONTMAP,A0
  593.     MULU    #640,D1
  594.     ADD.L    D0,D0
  595.     ADD.L    D0,A0
  596.     ADD.L    D1,A0
  597.     RTS
  598.  
  599. show_equals:
  600.  
  601.     lea    myequalmem,a0
  602.     
  603.     bsr    blitting
  604.     Move.l    a0,$dff054        ; dest mem d
  605.     Move.l    #0,$dff044        ; blit first word mask source a
  606.     move.w    #(%0001*256)+0,$dff040
  607.     move.w    #0,$dff042        ; blit cont reg 1
  608.     Move.w    #0,$dff066        ; modulo for dest
  609.     Move.w    #(65*64)+20,$dff058    ; blit height,width
  610.  
  611.     lea    myequalmem+(50*wide),a0
  612.     lea    equals,a1
  613.     lea    fades,a4
  614.     lea    equalsource,a2
  615.     move.l    #0,d2
  616. show_equal_loop1:
  617.     bsr    blitting
  618.  
  619.     move.l    a0,d0
  620.     and.l    #$fffffffe,d0
  621.     move.l    d0,a3
  622.  
  623.     move.l    a0,d5
  624.     and.l    #1,d5
  625.     eor.l    #1,d5
  626.     asl.l    #2,d5
  627.  
  628.     Move.l    a3,$dff054        ; dest mem d
  629.     Move.l    a3,$dff048        ; source mem c
  630.     Move.l    a2,$dff050        ; source mem a
  631.     
  632.     Move.w    #$ffff,$dff044        ; blit first word mask source a
  633.     move.w    #$ffff,$dff046        ; blit last  word mask source a
  634.     move.w    #-2,$dff064        ; modulo for source a
  635.     Move.w    #42,$dff066        ; modulo for dest d
  636.     Move.w    #42,$dff060        ; modulo for source c
  637.     
  638.     mulu    #8192,d5
  639.     or.w    #(%1011*256)+$fa,d5
  640.     move.w    d5,$dff040        ; blitcon 0
  641.     move.w    #%10,$dff042        ; blitcon 1
  642.     
  643.     clr.l    d1
  644.     move.b    (a1,d2),d1
  645.     cmp.b    #0,d1
  646.     beq.s    no_equal_here
  647.     move.b    (a4,d2),d7
  648.     add.b    d7,(a1,d2)
  649.     bpl.s    equal_zero
  650.     move.b    #0,(a1,d2)
  651. equal_zero:
  652.     asl.l    #6,d1
  653.     or.l    #1,d1
  654.     Move.w    d1,$dff058    ; blit height,width
  655. no_equal_here:
  656.     add.l    #1,a0
  657.  
  658.     add.l    #1,d2
  659.     cmp.l    #40,d2
  660.     blt    show_equal_loop1
  661.  
  662.     rts
  663.  
  664.  
  665. print_num:
  666.     movem.l    d0-d7/a0-a6,-(sp) 
  667.  
  668.     cmp.l    #-1,calc
  669.     bne.s    normal_num
  670.     
  671.     clr.l    d0
  672.     move.w    (a6),d0
  673.  
  674.     cmp.w    #0,d0
  675.     beq.s    skip_num
  676.  
  677.     cmp.l    maxequal,d0
  678.     blt.s    not_max
  679.     move.l    d0,maxequal
  680. not_max:
  681.     cmp.l    minequal,d0
  682.     bgt.s    not_min
  683.  
  684.     move.l    d0,minequal
  685. not_min:
  686.  
  687.     move.l    maxequal,d0
  688.     move.l    minequal,d1
  689.     
  690.     sub.l    d1,d0
  691.     divu    #divider,d0                ; divider - range of equalisers to play
  692.     
  693.     move.w    d0,divequal
  694. skip_num
  695.     movem.l    (sp)+,d0-d7/a0-a6    
  696.     rts
  697.  
  698. normal_num:
  699.     clr.l    d0
  700.     move.w    (a6),d0
  701.  
  702.     sub.l    minequal,d0            ; no notes less than 100!
  703.     move.w    divequal,d1    
  704.     divu    divequal,d0            ; smooth note - ie 20 equalisers
  705.     cmp.w    #37,d0
  706.     blt.s    equ_too_big
  707.  
  708.     move.w    #37,d0
  709.  
  710. equ_too_big:
  711.     cmp.w    #2,d0
  712.     bgt.s    equ_too_small
  713.  
  714.     move.w    #1,d0
  715.  
  716. equ_too_small:
  717.  
  718.     lea    equals,a0
  719.     add    d0,a0
  720.     cmp.b    #20,0(a0)
  721.     blt.s    equ_skip1
  722.     move.b    #30,0(a0)
  723. equ_skip1:
  724.     add.b    #20,0(a0)
  725.  
  726.     cmp.b    #30,+1(a0)
  727.     blt.s    equ_skip2
  728.     move.b    #30,+1(a0)
  729. equ_skip2:
  730.     add.b    #10,+1(a0)
  731.  
  732.     cmp.b    #30,-1(a0)
  733.     blt.s    equ_skip3
  734.     move.b    #30,-1(a0)
  735. equ_skip3:
  736.     add.b    #10,-1(a0)
  737.     
  738.     lea    fades,a0
  739.     add    d0,a0
  740.     move.b    #-1,0(a0)
  741.     move.b    #-1,-1(a0)
  742.     move.b    #-1,+1(a0)
  743.  
  744.     clr.l    d0
  745.  
  746.     movem.l    (sp)+,d0-d7/a0-a6    
  747.     rts
  748.  
  749. blitting:
  750.     btst    #6,$dff002
  751.     bne.s    blitting
  752.  
  753.     rts
  754.     
  755.  
  756.     
  757. Mt_Init:Lea    Mt_Data,a0
  758.     Move.l    a0,a1
  759.     Add.l    #$3b8,a1
  760.     Moveq    #$7f,d0
  761.     Moveq    #0,d1
  762. Mt_Loop    Move.l    d1,d2
  763.     Subq.w    #1,d0
  764. Mt_Lop2    Move.b    (a1)+,d1
  765.     Cmp.b    d2,d1
  766.     Bgt.s    Mt_Loop
  767.     Dbf    d0,Mt_Lop2
  768.     Addq.b    #1,d2
  769.  
  770.     Lea    Mt_SampleStarts,a1
  771.     Asl.l    #8,d2
  772.     Asl.l    #2,d2
  773.     Add.l    #$43c,d2
  774.     Add.l    a0,d2
  775.     Move.l    d2,a2
  776.     Moveq    #$1e,d0
  777. Mt_Lop3    Move.l    #0,(a2)
  778.     Move.l    a2,(a1)+
  779.     Moveq    #0,d1
  780.     Move.w    42(a0),d1
  781.     Asl.l    #1,d1
  782.     Add.l    d1,a2
  783.     Add.l    #$1e,a0
  784.     Dbf    d0,Mt_Lop3
  785.  
  786.     Or.b    #$2,$bfe001
  787.     Move.b    #$6,Mt_Speed
  788.     Move.b    #$3f,Mt_Voice1+$12
  789.     Move.b    #$3f,Mt_Voice2+$12
  790.     Move.b    #$3f,Mt_Voice3+$12
  791.     Move.b    #$3f,Mt_Voice4+$12
  792.  
  793.     Move.w    #0,$dff0a8
  794.     Move.w    #0,$dff0b8
  795.     Move.w    #0,$dff0c8
  796.     Move.w    #0,$dff0d8
  797.     Clr.b    Mt_SongPos
  798.     Clr.b    Mt_Counter
  799.     Clr.w    Mt_PattPos
  800.     Rts
  801.  
  802. Mt_End    Move.w    #0,$dff0a8
  803.     Move.w    #0,$dff0b8
  804.     Move.w    #0,$dff0c8
  805.     Move.w    #0,$dff0d8
  806.     Move.w    #$f,$dff096
  807.     Moveq.l    #0,d0
  808.     Rts
  809.  
  810. Mt_Music
  811.     Movem.l    d0-d4/a0-a3/a5-a6,-(a7)
  812.     Lea    Mt_Data,a0
  813.     Addq.b    #$1,Mt_Counter
  814.     Move.b    Mt_Counter,d0
  815.     
  816.     cmp.l    #-1,calc
  817.     beq.s    mt_playit
  818.     
  819.     
  820.     cmp.b    Mt_speed,d0
  821.     Blt.s    Mt_NoNew
  822. mt_playit
  823.     Clr.b    Mt_Counter
  824.     Bra    Mt_GetNew
  825. Mt_NoNew
  826.  
  827.     Lea    Mt_Voice1,a6
  828.     Lea    $dff0a0,a5
  829.     Bsr    Mt_CheckCom
  830.     Lea    Mt_Voice2,a6
  831.     Lea    $dff0b0,a5
  832.     Bsr    Mt_CheckCom
  833.     Lea    Mt_Voice3,a6
  834.     Lea    $dff0c0,a5
  835.     Bsr    Mt_CheckCom
  836.     Lea    Mt_Voice4,a6
  837.     Lea    $dff0d0,a5
  838.     Bsr    Mt_CheckCom
  839.     Bra    Mt_Endr
  840.  
  841. Mt_Arpeggio
  842.     Moveq.l    #0,d0
  843.     Move.b    Mt_Counter,d0
  844.     Divs    #$3,d0
  845.     Swap    d0
  846.     Cmp.w    #$0,d0
  847.     Beq.s    Mt_Arp2
  848.     Cmp.w    #$2,d0
  849.     Beq.s    Mt_Arp1
  850.     Moveq.l    #0,d0
  851.     Move.b    $3(a6),d0
  852.     Lsr.b    #4,d0
  853.     Bra.s    Mt_Arp3
  854.     
  855. Mt_Arp1    Moveq.l    #0,d0
  856.     Move.b    $3(a6),d0
  857.     And.b    #$f,d0
  858.     Bra.s    Mt_Arp3
  859. Mt_Arp2    Move.w    $10(a6),d2
  860.     Bra.s    Mt_Arp4
  861. Mt_Arp3    Asl.w    #1,d0
  862.     Moveq.l    #0,d1
  863.     Move.w    $10(a6),d1
  864.     Lea    Mt_Periods,a0
  865.     Moveq    #$24,d7
  866. Mt_ArpLoop
  867.     Move.w    (a0,d0.w),d2
  868.     Cmp.w    (a0),d1
  869.     Bge.s    Mt_Arp4
  870.     Addq.l    #2,a0
  871.     Dbf    d7,Mt_ArpLoop
  872.     Rts
  873. Mt_Arp4    Move.w    d2,$6(a5)
  874.     Rts
  875.  
  876. Mt_GetNew
  877.     Lea    Mt_Data,a0
  878.     Move.l    a0,a3
  879.     Move.l    a0,a2
  880.     Add.l    #$c,a3
  881.     Add.l    #$3b8,a2
  882.     Add.l    #$43c,a0
  883.  
  884.     Moveq.l    #0,d0
  885.     Move.l    d0,d1
  886.     Move.b    Mt_SongPos,d0
  887.  
  888.  
  889.     Move.b    (a2,d0.w),d1
  890.     Asl.l    #8,d1
  891.     Asl.l    #2,d1
  892.     Add.w    Mt_PattPos,d1
  893.     Clr.w    Mt_DmaCon
  894.     Lea    $dff0a0,a5
  895.     Lea    Mt_Voice1,a6
  896.     Move.l    #Mt_Instrument+0,a4
  897.     Bsr.s    Mt_PlayVoice
  898.     Lea    $dff0b0,a5
  899.     Lea    Mt_voice2,a6
  900.     Move.l    #Mt_Instrument+4,a4
  901.     Bsr.s    Mt_PlayVoice
  902.     Lea    $dff0c0,a5
  903.     Lea    Mt_Voice3,a6
  904.     Move.l    #Mt_Instrument+8,a4
  905.     Bsr.s    Mt_PlayVoice
  906.     Lea    $dff0d0,a5
  907.     Lea    Mt_Voice4,a6
  908.     Move.l    #Mt_Instrument+12,a4
  909.     Bsr.s    Mt_PlayVoice
  910.     Bra    Mt_SetDma
  911.  
  912. Mt_PlayVoice
  913.     Move.l    (a0,d1.l),(a6)
  914.     Addq.l    #4,d1
  915.     Moveq.l    #0,d2
  916.     Move.b    $2(a6),d2
  917.     And.b    #$f0,d2
  918.     Lsr.b    #4,d2
  919.     Move.b    (a6),d0
  920.     And.b    #$f0,d0
  921.     Or.b    d0,d2
  922.     
  923.     cmp.l    #-1,calc
  924.     beq.s    mt_playnote
  925.     
  926.     Tst.b    d2
  927.     Beq    Mt_SetRegs
  928.  
  929. mt_playnote
  930.     Moveq    #0,d3
  931.  
  932.     bsr    print_num        ; (a6) = note played
  933.  
  934.     Lea    Mt_SampleStarts,a1
  935.     Move.l    d2,d4
  936.     Subq.l    #$1,d2
  937.     Asl.l    #2,d2
  938.  
  939.     Move.l    d2,(a4)        
  940.  
  941.     Mulu    #$1e,d4
  942.     Move.l    (a1,d2.l),$4(a6)
  943.     Move.w    (a3,d4.l),$8(a6)
  944.     Move.w    $2(a3,d4.l),$12(a6)
  945.     Move.w    $4(a3,d4.l),d3
  946.     Tst.w    d3
  947.     Beq.s    Mt_NoLoop
  948.     
  949.     cmp.l    #-1,calc
  950.     beq.s    mt_setregs
  951.  
  952.     Move.l    $4(a6),d2
  953.     Asl.w    #1,d3
  954.     Add.l    d3,d2
  955.     Move.l    d2,$a(a6)
  956.     Move.w    $4(a3,d4.l),d0
  957.     Add.w    $6(a3,d4.l),d0
  958.     Move.w    d0,8(a6)
  959.     Move.w    $6(a3,d4.l),$e(a6)
  960.     Move.w    $12(a6),$8(a5)
  961.     Bra.w    Mt_SetRegs
  962. Mt_NoLoop
  963.     
  964.     cmp.l    #-1,calc
  965.     beq.s    mt_setregs
  966.  
  967.     Move.l    $4(a6),d2
  968.     Add.l    d3,d2
  969.     Move.l    d2,$a(a6)
  970.     Move.w    $6(a3,d4.l),$e(a6)
  971.     Move.w    $12(a6),$8(a5)
  972.         
  973. Mt_SetRegs
  974.     Move.w    (a6),d0
  975.     And.w    #$fff,d0
  976.     Beq    Mt_CheckCom2
  977.     Move.b    $2(a6),d0
  978.     And.b    #$F,d0
  979.     Cmp.b    #$3,d0
  980.     Bne.s    Mt_SetPeriod
  981.     Bsr    Mt_SetMyPort
  982.     Bra    Mt_checkcom2
  983. Mt_SetPeriod
  984.     Move.w    (a6),$10(a6)
  985.     And.w    #$fff,$10(a6)
  986.     Move.w    $14(a6),d0
  987.     Move.w    d0,$dff096
  988.     Move.b    #0,$1b(a6)
  989.  
  990.     cmp.l    #-1,calc
  991.     beq    mt_checkcom
  992.     
  993.     Move.l    $4(a6),(a5)
  994.     Move.w    $8(a6),$4(a5)
  995.     Move.w    $10(a6),d0
  996.     And.w    #$fff,d0
  997.     Move.w    d0,$6(a5)
  998.     Move.w    $14(a6),d0
  999.     Or.w    d0,Mt_DmaCon
  1000.     Bra    Mt_CheckCom2
  1001.  
  1002. Mt_SetDma
  1003.     
  1004.     cmp.l    #-1,calc
  1005.     beq    mt_wai3
  1006.     
  1007.     Move.w    #$12c,d0
  1008. Mt_Wait    Dbf    d0,Mt_Wait
  1009.     Move.w    Mt_DmaCon,d0
  1010.     Or.w    #$8000,d0
  1011.     Move.w    d0,$dff096
  1012.     Move.w    #$12c,d0
  1013.     
  1014.     cmp.l    #-1,calc
  1015.     beq    mt_wai3
  1016.     
  1017. Mt_Wai2    Dbf    d0,Mt_Wai2
  1018.     Lea    $dff000,a5
  1019.     Lea    Mt_Voice4,a6
  1020.     Move.l    $a(a6),$d0(a5)
  1021.     Move.w    $e(a6),$d4(a5)
  1022.     Lea    Mt_Voice3,a6
  1023.     Move.l    $a(a6),$c0(a5)
  1024.     Move.w    $e(a6),$c4(a5)
  1025.     Lea    Mt_voice2,a6
  1026.     Move.l    $a(a6),$b0(a5)
  1027.     Move.w    $e(a6),$b4(a5)
  1028.     Lea    Mt_voice1,a6
  1029.     Move.l    $a(a6),$a0(a5)
  1030.     Move.w    $e(a6),$a4(a5)
  1031.  
  1032. mt_wai3:
  1033.  
  1034.     Add.w    #$10,Mt_PattPos
  1035.     Cmp.w    #$400,Mt_PattPos
  1036.     Bne.s    Mt_Endr
  1037. Mt_Nex    Clr.w    Mt_PattPos
  1038.     Clr.b    Mt_Break
  1039.     Addq.b    #1,Mt_SongPos
  1040.     And.b    #$7f,Mt_SongPos
  1041.     Move.b    Mt_SongPos,d1
  1042.     Cmp.b    Mt_Data+$3b6,d1
  1043.     Bne.s    Mt_Endr
  1044.     
  1045.     move.l    #-1,finished
  1046.     Clr.b    Mt_SongPos            ; module end!
  1047.  
  1048. Mt_Endr    Tst.b    Mt_Break
  1049.     Bne.s    Mt_Nex
  1050.     Movem.l    (a7)+,d0-d4/a0-a3/a5-a6
  1051.     Rts
  1052.  
  1053. Mt_SetMyPort
  1054.     Move.w    (a6),d2
  1055.     And.w    #$fff,d2
  1056.     Move.w    d2,$18(a6)
  1057.     Move.w    $10(a6),d0
  1058.     Move.b    #0,$16(a6)
  1059.     Cmp.w    d0,d2
  1060.     Beq.s    Mt_ClrPort
  1061.     Bge.s    Mt_Rt
  1062.     Move.b    #$1,$16(a6)
  1063.     Rts
  1064. Mt_ClrPort
  1065.     Move.w    #0,$18(a6)
  1066. Mt_Rt    Rts
  1067.  
  1068. Mt_MyPort
  1069.     Move.b    $3(a6),d0
  1070.     Beq.s    Mt_MySlide
  1071.     Move.b    d0,$17(a6)
  1072.     Move.b    #0,$3(a6)
  1073. Mt_MySlide
  1074.     Tst.w    $18(a6)
  1075.     Beq.s    Mt_Rt
  1076.     Moveq.l    #0,d0
  1077.     Move.b    $17(a6),d0
  1078.     Tst.b    $16(a6)
  1079.     Bne.s    Mt_MySub
  1080.     Add.w    d0,$10(a6)
  1081.     Move.w    $18(a6),d0
  1082.     Cmp.w    $10(a6),d0
  1083.     Bgt.s    Mt_MyOK
  1084.     Move.w    $18(a6),$10(a6)
  1085.     Move.w    #0,$18(a6)
  1086. Mt_MyOK    Move.w    $10(a6),$6(a5)
  1087.     Rts
  1088. Mt_MySub
  1089.     Sub.w    d0,$10(a6)
  1090.     Move.w    $18(a6),d0
  1091.     Cmp.w    $10(a6),d0
  1092.     Blt.s    Mt_MyOK
  1093.     Move.w    $18(a6),$10(a6)
  1094.     Move.w    #0,$18(a6)
  1095.     Move.w    $10(a6),$6(a5)
  1096.     Rts
  1097.  
  1098. Mt_Vib    
  1099.     Move.b    $3(a6),d0
  1100.     Beq.s    Mt_Vi
  1101.     Move.b    d0,$1a(a6)
  1102.  
  1103. Mt_Vi    Move.b    $1b(a6),d0
  1104.     Lea    Mt_Sin,a4
  1105.     Lsr.w    #$2,d0
  1106.     And.w    #$1f,d0
  1107.     Moveq.l    #0,d2
  1108.     Move.b    (a4,d0.w),d2
  1109.     Move.b    $1a(a6),d0
  1110.     And.w    #$f,d0
  1111.     Mulu    d0,d2
  1112.     Lsr.w    #$6,d2
  1113.     Move.w    $10(a6),d0
  1114.     Tst.b    $1b(a6)
  1115.     Bmi.s    Mt_VibMin
  1116.     Add.w    d2,d0
  1117.     Bra.s    Mt_Vib2
  1118. Mt_VibMin
  1119.     Sub.w    d2,d0
  1120. Mt_Vib2    Move.w    d0,$6(a5)
  1121.     Move.b    $1a(a6),d0
  1122.     Lsr.w    #$2,d0
  1123.     And.w    #$3c,d0
  1124.     Add.b    d0,$1b(a6)
  1125.     Rts
  1126.  
  1127. Mt_Nop    Move.w    $10(a6),$6(a5)
  1128.     Rts
  1129.  
  1130. Mt_CheckCom
  1131.     cmp.l    #-1,calc
  1132.     bne.s    mt_checkedcom
  1133.     move.w    finding,unpackcolour
  1134.     eor.w    #$f0f,finding
  1135. mt_checkedcom:
  1136.     Move.w    $2(a6),d0
  1137.     And.w    #$fff,d0
  1138.     Beq.s    Mt_Nop
  1139.     Move.b    $2(a6),d0
  1140.     And.b    #$f,d0
  1141.     Tst.b    d0
  1142.     Beq    Mt_Arpeggio
  1143.     Cmp.b    #$1,d0
  1144.     Beq.s    Mt_PortUp
  1145.     Cmp.b    #$2,d0
  1146.     Beq    Mt_PortDown
  1147.     Cmp.b    #$3,d0
  1148.     Beq    Mt_MyPort
  1149.     Cmp.b    #$4,d0
  1150.     Beq    Mt_Vib
  1151.     Move.w    $10(a6),$6(a5)
  1152.     Cmp.b    #$a,d0
  1153.     Beq.s    Mt_VolSlide
  1154.     Rts
  1155.  
  1156. Mt_VolSlide
  1157.     Moveq    #0,d0
  1158.     Move.b    $3(a6),d0
  1159.     Lsr.b    #4,d0
  1160.     Tst.b    d0
  1161.     Beq.s    Mt_VolDown
  1162.     Add.b    d0,$13(a6)
  1163.     Cmp.b    #$3f,$13(a6)
  1164.     Ble.s    Mt_Vol2        
  1165.     Move.b    #$3f,$13(a6)
  1166. Mt_Vol2    Move.w    $12(a6),$8(a5)
  1167.     Rts
  1168.  
  1169. Mt_VolDown
  1170.     Moveq    #0,d0
  1171.     Move.b    $3(a6),d0
  1172.     And.b    #$f,d0
  1173.     Sub.b    d0,$13(a6)
  1174.     Bpl.s    Mt_Vol3
  1175.     Move.b    #0,$13(a6)
  1176. Mt_Vol3    Move.w    $12(a6),$8(a5)
  1177.     Rts
  1178.  
  1179. Mt_PortUp
  1180.     Moveq    #0,d0
  1181.     Move.b    $3(a6),d0
  1182.     Sub.w    d0,$10(a6)
  1183.     Move.w    $10(a6),d0
  1184.     And.w    #$fff,d0
  1185.     Cmp.w    #$71,d0
  1186.     Bpl.s    Mt_Por2
  1187.     And.w    #$f000,$10(a6)
  1188.     Or.w    #$71,$10(a6)
  1189. Mt_Por2    Move.w    $10(a6),d0
  1190.     And.w    #$fff,d0
  1191.     Move.w    d0,$6(a5)
  1192.     Rts
  1193.  
  1194. Mt_PortDown
  1195.     Moveq.w    #0,d0
  1196.     Move.b    $3(a6),d0
  1197.     Add.w    d0,$10(a6)
  1198.     Move.w    $10(a6),d0
  1199.     And.w    #$fff,d0
  1200.     Cmp.w    #$358,d0
  1201.     Bmi.s    Mt_Por3
  1202.     And.w    #$f000,$10(a6)
  1203.     Or.w    #$358,$10(a6)
  1204. Mt_Por3    Move.w    $10(a6),d0
  1205.     And.w    #$fff,d0
  1206.     Move.w    d0,$6(a5)
  1207.     Rts
  1208.  
  1209. Mt_CheckCom2
  1210.     Move.b    $2(a6),d0
  1211.     And.b    #$f,d0
  1212.     Cmp.b    #$e,d0
  1213.     Beq.s    Mt_SetFilt
  1214.     Cmp.b    #$d,d0
  1215.     Beq.s    Mt_PattBreak
  1216.     Cmp.b    #$b,d0
  1217.     Beq.s    Mt_PosJmp
  1218.     Cmp.b    #$c,d0
  1219.     Beq.s    Mt_SetVol
  1220.     Cmp.b    #$f,d0
  1221.     Beq.s    Mt_SetSpeed
  1222.     Rts
  1223.  
  1224. Mt_SetFilt
  1225.     Move.b    $3(a6),d0
  1226.     And.b    #$1,d0
  1227.     Asl.b    #$1,d0
  1228.     And.b    #$fd,$bfe001
  1229.     Or.b    d0,$bfe001
  1230.     Rts
  1231. Mt_PattBreak            ;  ** HERE`S THE FIX - IT WAS
  1232.     Move.b    #1,Mt_Break    ;  Not.b Mt_Break.
  1233.     Rts            ;  **************************
  1234. Mt_PosJmp
  1235.     Move.b    $3(a6),d0
  1236.     Subq.b    #$1,d0
  1237.     Move.b    d0,Mt_SongPos
  1238.     Not.b    Mt_Break
  1239.     Rts
  1240. Mt_SetVol
  1241.     Cmp.b    #$3f,$3(a6)
  1242.     Ble.s    Mt_Vol4
  1243.     Move.b    #$3f,$3(a6)
  1244. Mt_Vol4    Move.b    $3(a6),$8(a5)
  1245.     Move.b    $3(a6),$13(a6)    
  1246.     Rts
  1247. Mt_SetSpeed
  1248.     Move.b    $3(a6),d0
  1249.     And.w    #$1f,d0
  1250.     Beq.s    Mt_Rts2
  1251.     Clr.b    Mt_Counter
  1252.     Move.b    d0,Mt_Speed
  1253. Mt_Rts2    Rts
  1254.  
  1255.         section    misc,data_c
  1256.         
  1257.  
  1258.  
  1259.  
  1260. COPPER:    DC.W    $0104,$0000
  1261.     DC.W    $0108,$0000
  1262.     dc.w    $010A,$0000
  1263.  
  1264.     dc.w    $0180,$0000
  1265.  
  1266.     dc.w    $008e,$2c8c
  1267.     dc.w    $0090,$2ce3
  1268.  
  1269.     DC.W    $0092,$0030        ; screen left
  1270.     dc.w    $0094,$00d8        ; screen right
  1271.  
  1272.  
  1273. sp0:    dc.w    $0120,$0000,$0122,$0000    
  1274. sp1:    dc.w    $0124,$0000,$0126,$0000    
  1275. sp2:    dc.w    $0128,$0000,$012a,$0000    
  1276. sp3:    dc.w    $012c,$0000,$012e,$0000    
  1277. sp4:    dc.w    $0130,$0000,$0132,$0000    
  1278. sp5:    dc.w    $0134,$0000,$0136,$0000    
  1279. sp6:    dc.w    $0138,$0000,$013a,$0000    
  1280. sp7:    dc.w    $013c,$0000,$013e,$0000    
  1281.  
  1282. a set     $180        ; ----------
  1283. cols:    rept    32
  1284.     dc.w    a,0
  1285. a set a+2     
  1286.     endr
  1287.     dc.w    $3101,$fffe
  1288.  
  1289. a set $3101
  1290.         dc.w    a,$fffe
  1291.  
  1292.     dc.w    $100,$1200,$0108,$2
  1293. plne1    dc.w    $e0,0,$e2,0
  1294.     dc.w    $182,$fff
  1295.  
  1296. a set $4009
  1297.     dc.w    a,$fffe
  1298. colours:rept    56
  1299.     dc.w    $180,0    ; ------------
  1300.     endr
  1301. colours1:
  1302.     dc.w    $0180,$0
  1303.     dc.w    a+$100,$fffe,$0180,$0
  1304.     dc.w    $5301,$fffe,$0100,$5200
  1305.  
  1306.     DC.W    $0092,$0038    ; screen left
  1307.     dc.w    $0094,$00D0    ; screen right
  1308.  
  1309. bitmap  dc.w    $00e0,$0000,$00e2,$0000
  1310.     dc.w    $00e4,$0000,$00e6,$0000
  1311.     dc.w    $00e8,$0000,$00ea,$0000
  1312.     dc.w    $00ec,$0000,$00ee,$0000
  1313.     dc.w    $00f0,$0000,$00f2,$0000
  1314.     dc.w    $108,0
  1315. a set $5809
  1316.  
  1317. wave:    rept    90
  1318.     dc.w    a,$fffe,$0102,$0000
  1319. a set a+$100
  1320.         endr
  1321.  
  1322. wave1:  dc.w    a,$fffe,$0102,$0000
  1323.         dc.w    a+$100,$fffe,$0102,$0000
  1324.                 
  1325.         dc.w    a+$200,$fffe,$100,0
  1326.             
  1327. colours2:rept    56
  1328.     dc.w    $0180,$0
  1329. a set a+4
  1330.     endr
  1331. colours3:
  1332.     dc.w    $0180,$2
  1333.     dc.w    a+$100,$fffe,$0180,$0
  1334.  
  1335.     DC.W    $0092,$0030    ; screen left
  1336.     dc.w    $0094,$00d8    ; screen right
  1337.  
  1338. a set $d001
  1339. shat:   dc.w    $d001,$fffe
  1340.     dc.w    $100,$1200,$0108,2
  1341. plne    dc.w    $e0,0,$e2,0
  1342.     dc.w    $182,$2Af
  1343.  
  1344. a set a+$1000
  1345.     dc.w    a,$fffe
  1346.  
  1347. a set a+$100
  1348.     dc.w    $108,-(wide*2)-2
  1349.     dc.w    $182,$1AF
  1350. a set a+$1000
  1351.     dc.w    a,$fffe
  1352.     dc.w    $100,0
  1353.  
  1354.     dc.w    $008e,$2c7e
  1355.     dc.w    $0090,$2cc1
  1356.  
  1357. ;A SET A+$400
  1358.     DC.W    A,$FFFE,$108,2
  1359.     DC.W    $100,$2200
  1360.     dc.w     $0182,$2FF
  1361.     dc.w    $0184,$fff
  1362.     dc.w    $0186,$2ff
  1363.     
  1364. SCRL    DC.W    $E0,0,$E2,0
  1365. bpequal    dc.w    $e4,0,$e6,0
  1366.  
  1367.     DC.W    $FFE1,$FFFE,$2801,$FFFE,$100,0
  1368.     dc.w    $108,-82,$182,$444
  1369.     DC.W    $FFFF,$FFFE
  1370. GFXNAME:DC.B    "graphics.library",0
  1371.     even
  1372. GFXLOC:    DC.L    0
  1373. OLDCOP:    DC.L    0
  1374. store:  dc.l    0
  1375.  
  1376. colourtable: 
  1377.         
  1378.           dc.w $f00
  1379.          dc.w $f10,$f20,$f30,$f40,$f50,$f60,$f70,$f80,$f90,$fa0,$fb0,$fc0,$fd0,$fe0,$ff0
  1380.          dc.w $ef1,$df2,$cf3,$bf4,$af5,$9f6,$8f7,$7f8,$6f9,$5fa,$4fb,$3fc,$2fd,$1fe,$0ff
  1381.          dc.w $0ef,$0df,$0cf,$0bf,$0af,$09f,$08f,$07f,$06f,$05f,$04f,$03f,$02f,$01f,$00f
  1382.          dc.w $10e,$20d,$30c,$40b,$50a,$609,$708,$807,$906,$a05,$b04,$c03,$d02,$e01
  1383.  
  1384.              dc.w $8888
  1385.  
  1386. wavy:    dc.w    $000,$000,$000,$000,$000
  1387.     dc.w    $111,$111,$111,$111
  1388.     dc.w    $222,$222,$222
  1389.     dc.w    $333,$333
  1390.     dc.w    $444,$555
  1391.     dc.w    $666,$666
  1392.     dc.w    $777,$777,$777
  1393.     dc.w    $888,$888,$888,$888
  1394.     dc.w    $999,$999,$999,$999,$999
  1395.     dc.w    $888,$888,$888,$888
  1396.     dc.w    $777,$777,$777
  1397.     dc.w    $666,$666
  1398.     dc.w    $555,$444
  1399.     dc.w    $333,$333
  1400.     dc.w    $222,$222,$222
  1401.     dc.w    $111,$111,$111,$111
  1402.     dc.w    $8888
  1403.  
  1404.  
  1405.  
  1406. den:    dc.b    3,7,15,31
  1407.  
  1408. numst0:    dc.w    0
  1409. numst1:    dc.w    0
  1410. numst2:    dc.w    0
  1411.  
  1412. sth0:    dc.l    7    ;height
  1413. sth1:    dc.l    5
  1414. sth2:    dc.l    3
  1415.  
  1416. stary:    dc.w    0    ;current y position
  1417. stardat:dc.l    0    ;data for display
  1418. starcnt:dc.l    0    ;number of lines used
  1419. msb:    dc.w    0    ;gmt check
  1420. dens:    dc.l    0    ;density store
  1421. starh:    dc.l    0    ;store height
  1422.  
  1423. rseed    dc.b    $94,$2f,$c7,$ea,$93,$c5,$76,$89
  1424. framecount:
  1425.     dc.l    0
  1426.  
  1427. st0:    ds.b    200*4
  1428. st1:    ds.b    200*4
  1429. st2:    ds.b    200*4
  1430.  
  1431. star0:    dc.w $3800,$3800
  1432.     dc.w $4400,$6400
  1433.     dc.w $A200,$D200
  1434.     dc.w $8200,$A600
  1435.     dc.w $8A00,$8600
  1436.     dc.w $4400,$5C00
  1437.     dc.w $3800,$3800
  1438.  
  1439. star1:    dc.w $7000,$7000
  1440.     dc.w $C800,$8800
  1441.     dc.w $8800,$9800
  1442.     dc.w $8800,$B800
  1443.     dc.w $7000,$7000
  1444.  
  1445. star2:    dc.w $C000,$4000
  1446.     dc.w $A000,$E000
  1447.     dc.w $4000,$4000
  1448.  
  1449. bitmaparea:    ds.l 1
  1450. charcount:    dc.b 16
  1451.         EVEN
  1452. fontmap:    incbin    16x16.raw_4
  1453. textptr:    dc.l texttab
  1454. texttab:dc.b    ' WELCOME TO SLIPSTREAM BBS INTRO'
  1455.     DC.B    ' RING THE NEW SLIPSTREAM BBS ON ENGLAND'
  1456.     DC.B    '     +44 0642 300501 THE ABSOLUTE ZERO      '
  1457.     DC.B    ' CREDITES FOR THIS INTRO '
  1458.     DC.B    ' CODING BY POD WITH HELP FROM (FANGS) GRAPHICS BY  ?????????'
  1459.     DC.B    ' FONT TAKEN FROM DEFJAM INTRO MUSIC BY ???? OF ?????'
  1460.     DC.B    ' IF YOU ARE WAITING FOR THE GREETINGS YOU ARE READING THE WRONG SCROLLER'
  1461.     DC.B    ' IF YOU WANT TO CONTACT SLIPSTREAM THEN WRITE TO KID VIDEO AT 45 COCERIDER RD WAITHAMSTO LONDON E17 6QX OR'
  1462.     DC.B    ' POD 69 WOODSEATS RD SHEFFIELD S8 OPH OR RING (0742) 554063 '
  1463.     DC.B    'ANY WAY  SEE YOU  LATER                  TEXT WARP             '
  1464.     DC.B    '                                                                                       '
  1465.     DC.B    0
  1466.     
  1467. SCREEN    DCB.B    $8c8,0
  1468. logo:    incbin logo.raw
  1469.  
  1470. colos:    dc.w    $f00
  1471.     dc.w    $f10,$f20,$f30,$f40,$f50,$f60,$f70,$f80
  1472.     dc.w    $f90,$fa0,$fb0,$fc0,$fd0,$fe0,$ff0
  1473.     dc.w    $ef0,$df0,$cf0,$bf0,$af0,$9f0,$8f0,$7f0
  1474.     dc.w    $6f0,$5f0,$4f0,$3f0,$2f0,$1f0,$0f0
  1475.     dc.w    $0f1,$0f2,$0f3,$0f4,$0f5,$0f6,$0f7,$0f8
  1476.     dc.w    $0f9,$0fa,$0fb,$0fc,$0fd,$0fe,$0ff
  1477.     dc.w    $0ef,$0df,$0cf,$0bf,$0af,$09f,$08f,$07f
  1478.     dc.w    $06f,$05f,$04f,$03f,$02f,$01f,$00f
  1479.     dc.w    $10f,$20f,$30f,$40f,$50f,$60f,$70f,$80f
  1480.     dc.w    $90f,$a0f,$b0f,$c0f,$d0f,$e0f,$f0f
  1481.     dc.w    $f0e,$f0d,$f0c,$f0b,$f0a,$f09,$f08,$f07
  1482.     dc.w    $f06,$f05,$f04,$f03,$f02,$f01
  1483.     dc.w    $f00
  1484.     dc.w    $f10,$f20,$f30,$f40,$f50,$f60,$f70,$f80
  1485.     dc.w    $f90,$fa0,$fb0,$fc0,$fd0,$fe0,$ff0
  1486.     dc.w    $ef0,$df0,$cf0,$bf0,$af0,$9f0,$8f0,$7f0
  1487.     dc.w    $6f0,$5f0,$4f0,$3f0,$2f0,$1f0,$0f0
  1488.     dc.w    $0f1,$0f2,$0f3,$0f4,$0f5,$0f6,$0f7,$0f8
  1489.     dc.w    $0f9,$0fa,$0fb,$0fc,$0fd,$0fe,$0ff
  1490.     dc.w    $0ef,$0df,$0cf,$0bf,$0af,$09f,$08f,$07f
  1491.     dc.w    $06f,$05f,$04f,$03f,$02f,$01f,$00f
  1492.     dc.w    $10f,$20f,$30f,$40f,$50f,$60f,$70f,$80f
  1493.     dc.w    $90f,$a0f,$b0f,$c0f,$d0f,$e0f,$f0f
  1494.     dc.w    $f0e,$f0d,$f0c,$f0b,$f0a,$f09,$f08,$f07
  1495.     dc.w    $f06,$f05,$f04,$f03,$f02,$f01
  1496.     dc.w    $ffff
  1497. getto:    dc.l 0
  1498. poo:    dc.l 0
  1499. gob:    dc.l 0
  1500.         
  1501. grumpy:
  1502.     dc.w $d001,$cc01,$c801,$c401,$c001,$bd01
  1503.     dc.w $ba01,$b701,$b501,$b301,$b201,$b101
  1504.     dc.w $b001,$b101,$b201,$b301,$b501,$b701
  1505.     dc.w $ba01,$bd01,$c001,$c401,$c801,$cc01
  1506.     dc.w $d001
  1507.  
  1508. COUNTDOWN:    DC.B    4,0
  1509. SINPT:    DC.L    SINTABEND        
  1510. SINPT2:    DC.L    SINTAB2
  1511.     DC.B    255
  1512. SINTAB:    DC.B    $3C,$3F,$42,$46,$49,$4C,$50,$53,$56,$59
  1513.     DC.B    $5C,$5F,$61,$64,$67,$69,$6B,$6D,$6F,$71
  1514.     DC.B    $72,$73,$75,$76,$76,$77,$77,$77,$77,$77
  1515.     DC.B    $77,$76,$76,$75,$73,$72,$71,$6F,$6D,$6B
  1516.     DC.B    $69,$67,$64,$61,$5F,$5C,$59,$56,$53,$50
  1517.     DC.B    $4C,$49,$46,$42,$3F,$3C,$38,$35,$31,$2E
  1518.     DC.B    $2B,$27,$24,$21,$1E,$1B,$18,$16,$13,$10
  1519.     DC.B    $E,$C,$A,$8,$6,$5,$4,$2,$1,$1
  1520.     DC.B    $0,$0,$0,$0,$0,$0,$1,$1,$2,$4
  1521.     DC.B    $5,$6,$8,$A,$C,$E,$10,$13,$16,$18
  1522.     DC.B    $1B,$1E,$21,$24,$27,$2B,$2E,$31,$35
  1523. SINTABEND:    DC.B    $38,255
  1524. SINTAB2:DC.B    $2D,$31,$34,$38,$3B,$3E,$41,$45,$47,$4A,$4D,$4F,$51,$53,$55,$57
  1525.     DC.B    $58,$59,$59,$5A,$5A,$5A,$59,$59,$58,$57,$55,$53,$51,$4F,$4D,$4A
  1526.     DC.B    $47,$45,$41,$3E,$3B,$38,$34,$31,$2D,$29,$26,$22,$1F,$1C,$19,$15
  1527.     DC.B    $13,$10,$D,$B,$9,$7,$5,$3,$2,$1,$1,$0,$0,$0,$1,$1,$2,$3,$5,$7,$9
  1528.     DC.B    $B,$D,$10,$13,$15,$19,$1C,$1F,$22,$26,$29,$FF
  1529. PAUSE:    DC.B    0
  1530. SINMODULO:    DC.l    0
  1531.     
  1532. MESPTR:        DC.L    MESSAGE
  1533. difference dcb.B    $4000,0
  1534.     
  1535. SCROLLPLANE:    Dcb.B    $3200,0
  1536.  
  1537. Mt_Sin
  1538.     Dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  1539.     Dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  1540.  
  1541. Mt_Periods
  1542.     Dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  1543.     Dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  1544.     Dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  1545.     Dc.w $007f,$0078,$0071,$0000,$0000
  1546.  
  1547. Mt_Speed    Dc.b    $6
  1548. Mt_SongPos    Dc.b    $0
  1549. Mt_PattPos    Dc.w    $0
  1550. Mt_Counter    Dc.b    $0
  1551.  
  1552. Mt_Break    Dc.b    $0
  1553. Mt_DmaCon    Dc.w    $0
  1554. Mt_SampleStarts    Dcb.l    $1f,0
  1555.  
  1556. Mt_Voice1    Dcb.w    10,0
  1557.         Dc.w    $1
  1558.         Dcb.w    3,0
  1559.         Dc.w    0    ;new note last time
  1560. Mt_Voice2    Dcb.w    10,0
  1561.         Dc.w    $2
  1562.         Dcb.w    3,0
  1563.         Dc.w    0    ;new note last time
  1564. Mt_Voice3    Dcb.w    10,0
  1565.         Dc.w    $4
  1566.         Dcb.w    3,0
  1567.         Dc.w    0    ;new note last time
  1568. Mt_Voice4    Dcb.w    10,0
  1569.         Dc.w    $8
  1570.         Dcb.w    3,0
  1571.         Dc.w    0    ;new note last time
  1572. Mt_InstCount:    dc.b    0
  1573. Mt_Instrument:    dcb.l    4,0
  1574.  
  1575. wide    equ    44
  1576.     
  1577.  
  1578. newscr:        dc.l    0
  1579. flag:        dc.l    0
  1580. line:        dc.l    0
  1581. delay:        dc.l    0
  1582. delay2:        dc.l    0
  1583. delay3:        dc.l    0
  1584. x1:        dc.l    wide-4
  1585. x2:        dc.l    0
  1586. page:        dc.l    0
  1587. waiting:    dc.l    0
  1588. height:        dc.l    0
  1589.  
  1590. scr1:        dc.l    0
  1591. scr2:        dc.l    0
  1592.  
  1593. blank:        dcb.b    44*256*1,0
  1594.  
  1595. calc:        dc.l    -1
  1596. finished:    dc.l    0
  1597. finding:    dc.l    0
  1598.  
  1599. screen2:    dc.l    0
  1600.  
  1601. equals:        dcb.b    60,0
  1602. fades:        dcb.b    60,-1
  1603.  
  1604. maxequal:    dc.l    0
  1605. minequal:    dc.l    0
  1606. divequal:    dc.l    0
  1607.  
  1608. myequalmem:    dcb.b    wide*128*1,0
  1609.  
  1610. ;***    BLOODY HELL THIS IS THE UNPACK COLOUR!    ****
  1611. ;**     SET IT TO $DFF1FE FOR NO VISIBLE UNPACK!  ****
  1612. unpackcolour    equ    $dff180
  1613.  
  1614. equalsource:    dc.w    %11111110
  1615.  
  1616. mt_data:
  1617.         incbin    "mod.loader"    ; rem this line for no music
  1618.                     ; it is ok to do so,
  1619.                     ; the software will not crash!!
  1620.  
  1621.         dc.l    $19cce7a2    ; no music id - leave me here!
  1622.  
  1623. divider:    equ    70 ; number to divide note range by (def = 40)
  1624.  
  1625. MESSAGE:    ;1234567890123456789012
  1626.  
  1627.     dc.b    "---------------------------------"
  1628.  
  1629.     dc.b    "HI THERE POD! ITS ALL WORKING NOW, TOOK ME AN HOUR, "
  1630.     dc.b    "HOPE YOU LIKE IT!"
  1631.     dc.b    " JUST GIVE ME SOME CREDIT FOR HELPING YOU OUT! "
  1632.     dc.b    "    ITS ALL ON HERE, CALLED POD.S (WEIRD HUH!)      "
  1633.     dc.b    "YO POD! PARASITE HERE, HOPE YOUR OK MATE,"
  1634.     dc.b    " SEE YOU SOON, BYE! "
  1635.     dc.b    ""
  1636.     dc.b    ""
  1637.     dc.b    ""
  1638.     dc.b    ""
  1639.     dc.b    ""
  1640.     dc.b    ""
  1641.     dc.b    "   "
  1642.  
  1643.     dc.b    "---------------------------------"
  1644.     DC.B    '---SLIPSTREAM ARE---',254
  1645.     DC.B    '                    '
  1646.     DC.B    '      KID VIDEO     ',254
  1647.     DC.B    '         POD        ',254
  1648.     DC.B    '        ANDI        ',254
  1649.     DC.B    '       DIGITS       ',254
  1650.     DC.B    '       KAPPA        ',254
  1651.     DC.B    '       DARKHO       ',254
  1652.     DC.B    '       DAMATT       ',254
  1653.     DC.B    '        AX          ',254
  1654.     DC.B    '       FANGS        ',254
  1655.     DC.B    '       BREN         ',254
  1656.     dc.b    '       MALLY        ',254
  1657.     DC.B    'CALL THE ABSOLUTE ZERO ON'
  1658.     DC.B    ' ENGLAND +44 0642 300501 RUNS UP TO 19200'
  1659.     DC.B    ' ON LINE 24 HOURS A DAY GREETINGS GO TO '
  1660.     DC.B    ' CRYSTAL SKID ROW QUARTEX MAG FIELDS' 
  1661.     DC.B    ' ANARCHY MAYHEM LSD THE MIGHTY DRUIDS '
  1662.     DC.B    ' ARCHAOS THE STEALTH MODESTY SCOOTER'
  1663.     DC.B    ' IPEC ELITE D-MOB DEFJAM ANTHROX ECSTASY'
  1664.     DC.B    ' SORRY IF IVE MISSED YOU BUT IM SO PISSED OFF            '
  1665.     DC.B    'ANY WAY SEE YOU POD OF SLIPSTREAM            '
  1666.     DC.B    '               WRAP                       '
  1667.     DC.B    '        WRAP        ',254
  1668.     DC.B    255
  1669.     EVEN
  1670.  
  1671.  
  1672.     end
  1673.  
  1674.  
  1675.